home *** CD-ROM | disk | FTP | other *** search
/ SPACE 2 / SPACE - Library 2 - Volume 1.iso / program / 570 / include / gemfast.h < prev    next >
C/C++ Source or Header  |  1990-11-15  |  11KB  |  447 lines

  1.  
  2. /**************************************************************************
  3.  *
  4.  * GEMFAST.H - Header file for common VDI and AES symbols.    
  5.  *
  6.  *    This header file contains items compatible with both GEMDEFS and OBDEFS
  7.  *    from the Alcyon system.  Note that there are no 'extern' definitions
  8.  *    for the GEM functions, because they all return a signed int and work
  9.  *    fine as autodefined functions.
  10.  *
  11.  *    If you have a lot of source already coded for #include <gemdefs.h>,
  12.  *    you can create a dummy (empty) obdefs.h file, and code a new gemdefs.h
  13.  *    file which contains only #include <gemfast.h>.    YOU CAN NO LONGER USE
  14.  *    GEMDEFS AND OBDEFS WITH THE GEMFAST BINDINGS!  For the bindings libs
  15.  *    to work correctly, this header file must be used.  
  16.  *
  17.  * Credits dept:
  18.  *     This file bears an amazing similarity to the original Alcyon GEMDEFS
  19.  *     and OBDEFS header files, which are copyrighted by Atari.  What can I
  20.  *     say?  Copyrighted or not, these are the names and values that every-
  21.  *     body uses, so OF COURSE the files look *awful* similar...
  22.  *
  23.  * Maintenance:
  24.  *    12/03/89 - v1.3
  25.  *               Renamed a lot of functions, a name compatibility block was
  26.  *               added at the end of this file to smooth the transition.
  27.  *               Added NO_OBJECT, MU_MENTRY, MU_MEXIT to defines.
  28.  *               Added XMULTI structure, even though it really belongs to v1.4.
  29.  *************************************************************************/
  30.  
  31. #ifndef GEMFAST_H
  32.  
  33. #define GEMFAST_H        1        /* Tell the world GEMFAST is available */
  34. #define GEMFAST_VERSION 0x0130    /* Tell the world what version we're on */
  35.  
  36.                                 /* VDI inside fill styles - new names    */
  37. #define VIS_HOLLOW    0            /* these names will be phased out soon... */
  38. #define VIS_SOLID    1
  39. #define VIS_PATTERN 2
  40. #define VIS_HATCH    3
  41. #define VIS_UDPTRN    4
  42.                                 /* VDI inside fill patterns - new names */
  43. #define VIP_HOLLOW    0            /* these names will be phased out soon... */
  44. #define VIP_1PTRN    1
  45. #define VIP_2PTRN    2
  46. #define VIP_3PTRN    3
  47. #define VIP_4PTRN    4
  48. #define VIP_5PTRN    5
  49. #define VIP_6PTRN    6
  50. #define VIP_SOLID    7
  51.                                 /* VDI inside fill patterns  */
  52. #define IS_HOLLOW    0
  53. #define IS_SOLID    1
  54. #define IS_PATTERN    2
  55. #define IS_HATCH    3
  56. #define IS_UDPTRN    4
  57.                                 /* VDI inside fill patterns  */
  58. #define IP_HOLLOW    0
  59. #define IP_1PTRN    1
  60. #define IP_2PTRN    2
  61. #define IP_3PTRN    3
  62. #define IP_4PTRN    4
  63. #define IP_5PTRN    5
  64. #define IP_6PTRN    6
  65. #define IP_SOLID    7
  66.                                /* VDI normal graphics drawing modes */
  67. #define MD_REPLACE    1
  68. #define MD_TRANS    2
  69. #define MD_XOR        3
  70. #define MD_ERASE    4
  71.                                /* VDI bit blt rules */
  72. #define ALL_WHITE    0
  73. #define S_AND_D     1
  74. #define S_AND_NOTD    2
  75. #define S_ONLY        3
  76. #define NOTS_AND_D    4
  77. #define D_ONLY        5
  78. #define S_XOR_D     6
  79. #define S_OR_D        7
  80. #define NOT_SORD    8
  81. #define NOT_SXORD    9
  82. #define D_INVERT    10
  83. #define NOT_D        10
  84. #define S_OR_NOTD    11
  85. #define NOT_S        12
  86. #define NOTS_OR_D    13
  87. #define NOT_SANDD    14
  88. #define ALL_BLACK    15
  89.                                     /* font types */
  90. #define IBM         3
  91. #define SMALL        5
  92.                                     /* evnt_multi flags */
  93. #define MU_KEYBD    0x0001
  94. #define MU_BUTTON    0x0002
  95. #define MU_M1        0x0004
  96. #define MU_M2        0x0008
  97. #define MU_MESAG    0x0010
  98. #define MU_TIMER    0x0020
  99.                                     /* evnt_mouse flags */
  100. #define MU_MENTRY    0x0000
  101. #define MU_MEXIT    0x0001
  102.                                     /* keyboard states */
  103. #define K_RSHIFT    0x0001
  104. #define K_LSHIFT    0x0002
  105. #define K_CTRL        0x0004
  106. #define K_ALT        0x0008
  107.                                     /* event message values */
  108. #define MN_SELECTED 10
  109. #define WM_REDRAW    20
  110. #define WM_TOPPED    21
  111. #define WM_CLOSED    22
  112. #define WM_FULLED    23
  113. #define WM_ARROWED    24
  114. #define WM_HSLID    25
  115. #define WM_VSLID    26
  116. #define WM_SIZED    27
  117. #define WM_MOVED    28
  118. #define WM_NEWTOP    29
  119. #define AC_OPEN     40
  120. #define AC_CLOSE    41
  121.                                     /* form_dial opcodes */
  122. #define FMD_START    0
  123. #define FMD_GROW    1
  124. #define FMD_SHRINK    2
  125. #define FMD_FINISH    3
  126.                                     /* rsrc_gaddr structure types */
  127. #define ROOT        0                /* this name used by MWC */
  128. #define R_TREE        0 
  129. #define R_OBJECT    1
  130. #define R_TEDINFO    2
  131. #define R_ICONBLK    3
  132. #define R_BITBLK    4
  133. #define R_STRING    5
  134. #define R_IMAGEDATA 6
  135. #define R_OBSPEC    7
  136. #define R_TEPTEXT    8
  137. #define R_TEPTMPLT    9
  138. #define R_TEPVALID    10
  139. #define R_IBPMASK    11 
  140. #define R_IBPDATA    12     
  141. #define R_IBPTEXT    13
  142. #define R_BIPDATA    14
  143. #define R_FRSTR     15
  144. #define R_FRIMG     16 
  145.                                     /* Window Attributes */
  146. #define NAME        0x0001
  147. #define CLOSER        0x0002
  148. #define FULLER        0x0004
  149. #define MOVER        0x0008
  150. #define INFO        0x0010
  151. #define SIZER        0x0020
  152. #define UPARROW     0x0040
  153. #define DNARROW     0x0080
  154. #define VSLIDE        0x0100
  155. #define LFARROW     0x0200
  156. #define RTARROW     0x0400
  157. #define HSLIDE        0x0800
  158.                                     /* wind_calc flags */
  159. #define WC_BORDER    0
  160. #define WC_WORK     1
  161.                                     /* wind_get flags */
  162. #define WF_KIND     1
  163. #define WF_NAME     2
  164. #define WF_INFO     3
  165. #define WF_WORKXYWH 4
  166. #define WF_CURRXYWH 5
  167. #define WF_PREVXYWH 6
  168. #define WF_FULLXYWH 7
  169. #define WF_HSLIDE    8
  170. #define WF_VSLIDE    9
  171. #define WF_TOP        10
  172. #define WF_FIRSTXYWH 11
  173. #define WF_NEXTXYWH 12
  174. #define WF_RESVD    13
  175. #define WF_NEWDESK    14
  176. #define WF_HSLSIZE    15
  177. #define WF_VSLSIZE    16
  178. #define WF_SCREEN    17
  179.                                     /* wind_update flags */
  180. #define END_UPDATE    0
  181. #define BEG_UPDATE    1
  182. #define END_MCTRL    2
  183. #define BEG_MCTRL    3
  184.                                     /* graf_mouse mouse types*/
  185. #define ARROW        0
  186. #define TEXT_CRSR    1
  187. #define HOURGLASS    2                /* this name used by MWC (why?) */
  188. #define BUSY_BEE    2
  189. #define BEE         2
  190. #define POINT_HAND    3
  191. #define FLAT_HAND    4
  192. #define THIN_CROSS    5
  193. #define THICK_CROSS 6
  194. #define OUTLN_CROSS 7
  195. #define USER_DEF    255
  196. #define M_OFF        256
  197. #define M_ON        257
  198.                                 /* max depth of search or draw    */
  199. #define MAX_DEPTH    8
  200.                                 /* value returned by objc_find(), et. al. */
  201. #define NO_OBJECT    -1
  202.                                 /* object types */
  203. #define G_BOX        20
  204. #define G_TEXT        21
  205. #define G_BOXTEXT    22
  206. #define G_IMAGE     23
  207. #define G_USERDEF    24
  208. #define G_PROGDEF    24
  209. #define G_IBOX        25
  210. #define G_BUTTON    26
  211. #define G_BOXCHAR    27
  212. #define G_STRING    28
  213. #define G_FTEXT     29
  214. #define G_FBOXTEXT    30
  215. #define G_ICON        31
  216. #define G_TITLE     32
  217.                                 /* object flags */
  218. #define NONE        0x0000
  219. #define SELECTABLE    0x0001
  220. #define DEFAULT     0x0002
  221. #define EXIT        0x0004
  222. #define EDITABLE    0x0008
  223. #define RBUTTON     0x0010
  224. #define LASTOB        0x0020
  225. #define TOUCHEXIT    0x0040
  226. #define HIDETREE    0x0080
  227. #define INDIRECT    0x0100
  228.                                 /* Object states */
  229. #define NORMAL        0x0000
  230. #define SELECTED    0x0001
  231. #define CROSSED     0x0002
  232. #define CHECKED     0x0004
  233. #define DISABLED    0x0008
  234. #define OUTLINED    0x0010
  235. #define SHADOWED    0x0020
  236.                                 /* Object colors    */
  237. #define WHITE        0
  238. #define BLACK        1
  239. #define RED         2
  240. #define GREEN        3
  241. #define BLUE        4
  242. #define CYAN        5
  243. #define YELLOW        6
  244. #define MAGENTA     7
  245. #define LWHITE        8
  246. #define LBLACK        9
  247. #define LRED        10
  248. #define LGREEN        11
  249. #define LBLUE        12
  250. #define LCYAN        13
  251. #define LYELLOW     14
  252. #define LMAGENTA    15
  253.                                 /* editable text field definitions */
  254. #define EDSTART     0
  255. #define EDINIT        1
  256. #define EDCHAR        2
  257. #define EDEND        3
  258.                                 /* editable text justification */
  259. #define TE_LEFT     0
  260. #define TE_RIGHT    1
  261. #define TE_CNTR     2
  262.  
  263.                                 /* VDI Memory Form Definition Block */
  264.                              
  265. #ifndef FDADDR                    /* v1.3:  this typedef has been added to */
  266. typedef char *FDADDR;            /* help provide compatibility between     */
  267. #endif                            /* bindings systems.                     */
  268.  
  269. typedef struct fdbstr {
  270.     FDADDR    fd_addr;
  271.     int     fd_w;
  272.     int     fd_h;
  273.     int     fd_wdwidth;
  274.     int     fd_stand;
  275.     int     fd_nplanes;
  276.     int     fd_r1;
  277.     int     fd_r2;
  278.     int     fd_r3;
  279.     } FDB;      
  280.  
  281. #define MFDB    FDB                 /* MFDB added for Laser compatibily */
  282.  
  283.                                     /* Mouse Form Definition Block */
  284. typedef struct mfstr {
  285.     int mf_xhot;
  286.     int mf_yhot;
  287.     int mf_nplanes;
  288.     int mf_fg;
  289.     int mf_bg;
  290.     int mf_mask[16];
  291.     int mf_data[16];
  292.     } MFORM ;
  293.  
  294. typedef struct object {
  295.     int             ob_next;        /* -> object's next sibling     */
  296.     int             ob_head;        /* -> head of object's children */
  297.     int             ob_tail;        /* -> tail of object's children */
  298.     unsigned int    ob_type;        /* type of object                */
  299.     unsigned int    ob_flags;        /* flags                        */
  300.     unsigned int    ob_state;        /* state                        */
  301.     unsigned long    ob_spec;
  302.     int             ob_x;            /* upper left corner of object    */
  303.     int             ob_y;            /* upper left corner of object    */
  304.     int             ob_width;        /* width of obj                 */
  305.     int             ob_height;        /* height of obj                */
  306.     } OBJECT;
  307.  
  308. typedef struct grect {
  309.     int g_x;
  310.     int g_y;
  311.     int g_w;
  312.     int g_h;
  313.     } GRECT;
  314.  
  315. typedef struct vrect {
  316.     int v_x1;
  317.     int v_y1;
  318.     int v_x2;
  319.     int v_y2;
  320.     } VRECT;
  321.  
  322. typedef struct text_edinfo {
  323.     char *te_ptext;             /* ptr to text                 */
  324.     char *te_ptmplt;            /* ptr to template             */
  325.     char *te_pvalid;            /* ptr to validation chrs.     */
  326.     int  te_font;                /* font                      */
  327.     int  te_junk1;                /* junk word                 */
  328.     int  te_just;                /* justification             */
  329.     int  te_color;                /* color information word     */
  330.     int  te_junk2;                /* junk word                 */
  331.     int  te_thickness;            /* border thickness          */
  332.     int  te_txtlen;             /* length of text string     */
  333.     int  te_tmplen;             /* length of template string */
  334.     } TEDINFO;
  335.  
  336. typedef struct icon_block {
  337.     int  *ib_pmask;
  338.     int  *ib_pdata;
  339.     char *ib_ptext;
  340.     int  ib_char;
  341.     int  ib_xchar;
  342.     int  ib_ychar;
  343.     int  ib_xicon;
  344.     int  ib_yicon;
  345.     int  ib_wicon;
  346.     int  ib_hicon;
  347.     int  ib_xtext;
  348.     int  ib_ytext;
  349.     int  ib_wtext;
  350.     int  ib_htext;
  351.     } ICONBLK;
  352.  
  353. typedef struct bit_block {
  354.     int *bi_pdata;                    /* ptr to bit forms data  */
  355.     int bi_wb;                        /* width of form in bytes */
  356.     int bi_hl;                        /* height in lines          */
  357.     int bi_x;                        /* source x in bit form   */
  358.     int bi_y;                        /* source y in bit form   */
  359.     int bi_color;                    /* fg color of blt          */
  360.     } BITBLK;
  361.  
  362. typedef struct user_blk {
  363.     long ub_code;
  364.     long ub_parm;
  365.     } USERBLK;
  366.  
  367. #define appl_blk user_blk
  368. #define APPLBLK  USERBLK
  369.  
  370. typedef struct parm_blk {
  371.     OBJECT    *pb_tree;
  372.     int     pb_obj;
  373.     int     pb_prevstate;
  374.     int     pb_currstate;
  375.     int     pb_x, pb_y, pb_w, pb_h;
  376.     int     pb_xc, pb_yc, pb_wc, pb_hc;
  377.     long    pb_parm;
  378.     } PARMBLK;
  379.  
  380. /* ignore following structures, they're being set up for GEMFAST v2.0  - Ian */
  381.  
  382. typedef struct xmouse {
  383.     int retval;
  384.     int bclicks;
  385.     int mask;
  386.     int state;
  387.     int status;
  388.     int mousex;
  389.     int mousey;
  390.     int mouseb;
  391.     int keystate;
  392.     } XMOUSE;
  393.  
  394. typedef struct xmulti {
  395.     int     msgbuf[8];
  396.     int     mflags,
  397.             mbclicks,
  398.             mbmask,
  399.             mbstate,
  400.             mm1flags;
  401.     GRECT    mm1rect;
  402.     int     mm2flags;
  403.     GRECT    mm2rect;
  404.     int     mtlocount,
  405.             mthicount;
  406.     int     mwhich,
  407.             mmox,
  408.             mmoy,
  409.             mmobutton,
  410.             mmokstate,
  411.             mkreturn,
  412.             mbreturn;
  413. } XMULTI;
  414.  
  415. /**************************************************************************
  416.  *
  417.  * Name compatibility stuff.
  418.  *
  419.  *    08/28/89 - v1.3
  420.  *                In v1.3, a big push has been made to make a consistant
  421.  *                naming standard for the AES utilities.    To avoid breaking
  422.  *                a lot of existing code, the following block will direct
  423.  *                the old names to the new routines.
  424.  *
  425.  *************************************************************************/
  426.  
  427. #define objclg_adjust            rc_gadjust
  428. #define objclv_adjust            rc_vadjust
  429.  
  430. #define objrb_which(a,b)        obj_rbfind((a),(b),SELECTED)
  431. #define obj_rbwhich(a,b)        obj_rbfind((a),(b),SELECTED)
  432. #define objxrb_which            obj_rbfind
  433.  
  434. #define objc_xywh                obj_xywh
  435.  
  436. #define objst_change            obj_stchange
  437. #define objfl_change            obj_flchange
  438.  
  439. #define graqon_mouse            gra_qonmouse
  440. #define graqof_mouse            gra_qofmouse
  441. #define graq_mstate             gra_qmstate
  442.  
  443. #endif
  444.  
  445. /*    end of GEMFAST.H */
  446.  
  447.